
/* 编写一个程序，检查是否可以通过由它的一个子串重复多次构成。 */

#include <stdio.h>
#include <string.h>

/* 判奇偶 */
int judgeLen( int len)
{
    if( len % 2 == 0)
    {
        return 2;
    }
    else 
        return 1;
}

/* 偶数 */
int evenNumer(const char *str, int len)
{
    /* 偶数折半前后一样 */
    int len1 = len / 2;
    for(int idx = 0; idx < len1; idx++)
    {
        if(str[idx] != str[idx + len1])
        {
            printf("不可以由它的一个子串重复多次构成\n");
            return 0;
        }
    }
    printf("可以由它的一个子串重复多次构成\n");
}

/* 奇数 */
int oddNumer(const char *str, int len)
{
    for(int idx = 0; idx < len; idx++)
    {
        if(str[idx] != str[idx+1])
        {
            printf("不可以由它的一个子串重复多次构成\n");
            return 0;                    
        }
    }
    printf("可以由它的一个子串重复多次构成\n");
}

char compareChar(const char *str)
{
    printf("%s\n", str); 
    int len = strlen(str);
    printf("%d\n", len); 
    if(str != NULL)
    {
        int ret = judgeLen(len);
        if(ret == 2)
        {
            /* 偶数折半前后一样 */
            evenNumer(str, len);
        }
        else
        {
            /* 奇数只可能是同一字符 */
            oddNumer(str, len);
        }
    }
}

int main()
{
    char ch;
    char str[]= "asdfghjkl";  
    compareChar(str);

    return 0;
}